package com.itheima.mp.mapper;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itheima.mp.domain.po.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * UserMapper 接口，继承 BaseMapper<User>
 * 提供对 User 实体的数据库操作方法
 */
public interface UserMapper extends BaseMapper<User> {
    /**
     * 更新用户余额的方法
     * @param amount 要减少的金额
     * @param userQueryWrapper 查询条件封装对象，用于指定要更新哪些用户的余额
     */
    @Update("update user set balance=balance - #{amount} ${ew.customSqlSegment}")
    void updateBalance(@Param("amount") int amount,@Param("ew") LambdaQueryWrapper<User> userQueryWrapper);

    @Update("update user set balance=balance - #{amount} where id = #{id}")
    void updateBalanceById(@Param("amount") Integer amount,@Param("id") Long id);
    // 以下是注释掉的其他方法定义，包括：
    // 更新用户余额的另一种实现方式
//    @Update("UPDATE user SET balance = balance - #{amount} ${ew.customSqlSegment}")
//    void updateBalance(@Param("amount") int amount, @Param("ew") LambdaQueryWrapper<User> wrapper);



    // 以下是其他用户操作方法的注释定义：
//    void saveUser(User user);          // 保存用户信息
//
//    void deleteUser(Long id);          // 根据ID删除用户
//
//    void updateUser(User user);        // 更新用户信息
//
//    User queryUserById(@Param("id") Long id);  // 根据ID查询用户
//
//    List<User> queryUserByIds(@Param("ids") List<Long> ids);  // 根据ID列表查询用户
}
